// 定义全局函数
window.toggleExpiryDate = function (selectElement) {
    const documentItem = $(selectElement).closest('.document-item');
    const expiryDateInput = documentItem.find('.expiry-date-input');
    if (selectElement.value === '护照') {
        expiryDateInput.show().prop('required', true);
        documentItem.css('grid-template-columns', '2fr 2fr 2fr 1fr');
    } else {
        expiryDateInput.hide().prop('required', false);
        documentItem.css('grid-template-columns', '2fr 2fr 1fr');
    }
};

// 修改 addDocumentField 函数，改用 jQuery 绑定事件
function addDocumentField(documentData = null) {
    const documentHtml = `
      <div class="document-item">
          <select name="documentType" required>
              <option value="身份证" ${documentData?.document_type === '身份证' ? 'selected' : ''}>身份证</option>
              <option value="护照" ${documentData?.document_type === '护照' ? 'selected' : ''}>护照</option>
              <option value="驾照" ${documentData?.document_type === '驾照' ? 'selected' : ''}>驾照</option>
              <option value="军人证" ${documentData?.document_type === '军人证' ? 'selected' : ''}>军人证</option>
              <option value="回乡证" ${documentData?.document_type === '回乡证' ? 'selected' : ''}>回乡证</option>
              <option value="港澳通行证" ${documentData?.document_type === '港澳通行证' ? 'selected' : ''}>港澳通行证</option>
              <option value="台胞证" ${documentData?.document_type === '台胞证' ? 'selected' : ''}>台胞证</option>
              <option value="台湾通行证" ${documentData?.document_type === '台湾通行证' ? 'selected' : ''}>台湾通行证</option>
              <option value="国际海员证" ${documentData?.document_type === '国际海员证' ? 'selected' : ''}>国际海员证</option>
              <option value="其他" ${documentData?.document_type === '其他' ? 'selected' : ''}>其他</option>
          </select>
          <input type="text" name="documentNumber" placeholder="证件号码" 
              value="${documentData?.document_number || ''}" required>
          <input type="date" name="expiryDate" placeholder="有效期" 
              value="${documentData?.expiry_date || ''}" 
              class="expiry-date-input" 
              ${documentData?.document_type === '护照' ? 'required' : 'style="display:none"'}>
          <button type="button" class="remove-document-btn">删除</button>
      </div>
  `;
    const $newItem = $(documentHtml);

    // 使用 jQuery 绑定事件
    $newItem.find('select[name="documentType"]').on('change', function () {
        toggleExpiryDate(this);
    });

    $newItem.find('.remove-document-btn').on('click', function () {
        $(this).closest('.document-item').remove();
    });

    $('#documentsList').append($newItem);
    // 初始化时检查是否需要显示有效期
    if (documentData) {
        toggleExpiryDate($newItem.find('[name="documentType"]')[0]);
    }
}

// 定义保存函数
function saveTravelerInfo() {
    // 验证表单
    if (!validateForm()) {
        return;
    }
    // 获取基本表单数据
    let formData = $('#editTravelerForm').serialize();
    // 收集证件信息
    $('.document-item').each(function (index) {
        formData += '&documentType=' + encodeURIComponent($(this).find('[name="documentType"]').val());
        formData += '&documentNumber=' + encodeURIComponent($(this).find('[name="documentNumber"]').val());
        // 如果是护照，添加有效期
        if ($(this).find('[name="documentType"]').val() === '护照') {
            formData += '&expiryDate=' + encodeURIComponent($(this).find('[name="expiryDate"]').val());
        } else {
            formData += '&expiryDate=';
        }
    });
    // 发送保存请求
    $.ajax({
        url: 'updateTraveler',
        method: 'POST',
        data: formData,
        dataType: "json",
        success: function (response) {
            if (response.success) {
                alert('保存成功');
                window.location.href = 'My_fellow_traveler.jsp';
            } else {
                alert(response.message || '保存失败');
            }
        },
        error: function () {
            alert('保存失败');
        }
    });
}

// 表单验证函数
function validateForm() {
    // 验证必填字段
    const requiredFields = {
        'chineseName': '中文姓名',
        'gender': '性别',
        'nationality': '国籍',
        'phone': '手机号码'
    };
    for (let [field, label] of Object.entries(requiredFields)) {
        const value = $(`#${field}`).val();
        if (!value || value.trim() === '') {
            alert(`请填写${label}`);
            $(`#${field}`).focus();
            return false;
        }
    }
    // 验证手机号格式
    const phone = $('#phone').val().trim();
    if (!/^1[3-9]\d{9}$/.test(phone)) {
        alert('请输入正确的手机号码');
        $('#phone').focus();
        return false;
    }
    // 验证证件信息
    let hasValidDocument = false;
    let documentTypes = new Set();
    let hasError = false;
    $('.document-item').each(function() {
        const docType = $(this).find('[name="documentType"]').val();
        const docNumber = $(this).find('[name="documentNumber"]').val().trim();
        const expiryDate = $(this).find('[name="expiryDate"]').val();
        if (docNumber) {
            // 检查证件类型是否重复
            if (documentTypes.has(docType)) {
                alert('不能添加重复的证件类型：' + docType);
                hasError = true;
                return false;
            }
            documentTypes.add(docType);
            hasValidDocument = true;
            // 护照必须填写有效期
            if (docType === '护照' && !expiryDate) {
                alert('护照必须填写有效期');
                $(this).find('[name="expiryDate"]').focus();
                hasValidDocument = false;
                return false;
            }
        }
    });
    if (hasError || !hasValidDocument) {
        if (!hasValidDocument) {
            alert('请至少添加一个有效的证件信息');
        }
        return false;
    }
    return true;
}

// 加载旅客信息函数
function loadTravelerInfo(id) {
    $.ajax({
        url: 'getTravelerInfo',
        method: 'POST',
        data: {id: id},
        dataType: 'json',
        success: function (data) {
            if (data) {
                fillTravelerForm(data);
            }
        },
        error: function () {
            alert('加载旅客信息失败');
        }
    });
}

// 填充表单函数
function fillTravelerForm(data) {
    $('#travelerId').val(data.id);
    $('#chineseName').val(data.chineseName);
    $('#surname').val(data.surname);
    $('#givenName').val(data.givenName);
    $('#gender').val(data.gender);
    $('#nationality').val(data.nationality);
    $('#phone').val(data.phone);

    // 填充证件信息
    $('#documentsList').empty();
    if (data.documents && data.documents.length > 0) {
        data.documents.forEach(doc => {
            addDocumentField(doc);
        });
    } else {
        addDocumentField();
    }
}

// 页面加载完成后执行
$(document).ready(function () {
    // 获取URL中的旅客ID
    const urlParams = new URLSearchParams(window.location.search);
    const travelerId = urlParams.get('id');
    if (travelerId) {
        // 加载旅客信息
        loadTravelerInfo(travelerId);
    }
    // 表单提交处理
    $('#editTravelerForm').on('submit', function (e) {
        e.preventDefault();
        saveTravelerInfo();
    });
    // 添加证件按钮点击事件
    $('.add-document-btn').on('click', function () {
        addDocumentField();
    });
});
